Skip to content

Support for CapturingTypes #12947

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 25 commits into from
Closed

Support for CapturingTypes #12947

wants to merge 25 commits into from

Conversation

odersky
Copy link
Contributor

@odersky odersky commented Jun 26, 2021

Initial support for capturing types in the compiler, independent of a particular strategy to test them. This allows us to experiment with the strategy later.

Based on #12938

@odersky odersky added the cc-experiment Intended to be merged with cc-experiment branch on origin label Jun 26, 2021
@odersky odersky force-pushed the add-cc2 branch 2 times, most recently from 9da35a4 to f66e902 Compare July 1, 2021 07:52
odersky added 25 commits August 17, 2021 13:02
 - Introduce monadic capture set constraint handling
 - Change CapturingType to take a capture set instead of a single capture reference
Don't allow capture variables to be changed if `<:<` returns false.
Add element validation for capture variables. This can be used to
disallow * in instances, or to give better error messages if variable
bounds are violated.
# Conflicts:
#	compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala
#	tests/neg-custom-args/captures/boxmap.check
#	tests/neg-custom-args/captures/try.check
#	tests/neg-custom-args/captures/try2.check
# Conflicts:
#	compiler/src/dotty/tools/dotc/core/tasty/TreePickler.scala
#	compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala
#	compiler/src/dotty/tools/dotc/printing/RefinedPrinter.scala
#	tests/pos-custom-args/captures/boxmap.scala
#	tests/pos-custom-args/captures/cc-expand.scala
Need to strip again after dealiasing
Can be reverted once we assume type variables have by default a {*} Any upper bound.
pruneErasedDef's normalizations interfere with it.
@odersky
Copy link
Contributor Author

odersky commented Aug 17, 2021

Superseded by #13309, which is made against cc-experiment

@odersky odersky closed this Aug 17, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cc-experiment Intended to be merged with cc-experiment branch on origin
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant